What is expect?
The 'expect' npm package is a library for writing test assertions. It is commonly used in conjunction with testing frameworks like Jest or Mocha to validate the behavior of JavaScript code. It provides a range of assertion types and matchers that allow developers to write expressive and readable tests.
What are expect's main functionalities?
Basic Assertions
This feature allows you to assert that a value matches exactly what you expect. The 'toBe' matcher compares with ===.
expect(2 + 2).toBe(4);
Object Property Assertions
With this feature, you can assert that an object has a specific property with a certain value. The 'toHaveProperty' matcher checks for the existence and value of a property in an object.
expect({ name: 'Alice', age: 30 }).toHaveProperty('name', 'Alice');
Exception Testing
This feature is used to test if a function throws an exception when it is executed. The 'toThrow' matcher is used to assert that an error is thrown with a specific message.
expect(() => { throw new Error('failure'); }).toThrow('failure');
Array Containment
This feature allows you to assert that an array contains a specific item. The 'toContain' matcher checks if an array includes the expected item.
expect(['Alice', 'Bob', 'Eve']).toContain('Bob');
Asynchronous Assertions
This feature enables you to write assertions for asynchronous code. The 'resolves' matcher waits for a promise to resolve and then checks the resolved value.
expect(Promise.resolve('success')).resolves.toBe('success');
Other packages similar to expect
chai
Chai is a BDD/TDD assertion library for node and the browser that can be paired with any javascript testing framework. It offers a similar range of matchers and assertions as expect, and it provides a fluent chainable language to construct assertions.
should
Should.js is an expressive, readable, framework-agnostic assertion library. The key difference is in the style of assertions it offers, using a more fluent chainable API that reads like English.
assert
Assert is a module that provides a set of assertion functions for verifying invariants. It is built into Node.js and is less feature-rich compared to expect, but it serves as a simple way to write assertions in a Node.js environment.
jest
Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It comes with its own assertion library, which provides functionality similar to expect, as expect is actually part of Jest.